package com.cly.base.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cly.base.dto.BasePageParam;
import com.cly.base.entity.BaseEntity;
import com.cly.result.JsonRequest;

import java.io.Serializable;
import java.util.List;

/**
 * 基础的业务层接口超类
 *
 * @author by 春风能解释
 * <p>
 * 2024/8/29
 */
public interface IBaseService<T extends BaseEntity, SD, QD, UD, V, IT extends Serializable> extends IService<T> {

    /**
     * 基础的列表查询逻辑
     *
     * @param queryDto 查询条件
     * @return JSON
     */
    JsonRequest<List<V>> baseList(QD queryDto);

    /**
     * 基础的分页查询逻辑
     *
     * @param queryDto 查询条件
     * @return JSON
     */
    JsonRequest<List<V>> basePage(BasePageParam<QD> queryDto);

    /**
     * 基础的新增逻辑
     *
     * @param saveDto 新增条件
     * @return JSON
     */
    JsonRequest<Integer> baseAdd(SD saveDto);

    /**
     * 基础的修改逻辑
     *
     * @param updateDto 修改条件
     * @return JSON
     */
    JsonRequest<Integer> baseUpdate(UD updateDto);

    /**
     * 基础的删除逻辑
     *
     * @param ids 待删除的id
     * @return JSON
     */
    JsonRequest<Integer> baseDelete(List<IT> ids);
}
